package cn.pzaily.fealetter.service;

import cn.pzaily.fealetter.dto.BatchParamsDTO;
import cn.pzaily.fealetter.dto.ParamsDTO;
import cn.pzaily.fealetter.entity.PlatformEntity;
import cn.pzaily.fealetter.entity.TemplateEntity;

import java.util.List;
import java.util.Map;

/**
 * @PackageName: cn.pzaily.fealetter.service
 * @Description:
 * @Author: Pang
 * @Date: 2021-11-21 17:38
 */
public interface SendService {


    /**
     * 检验系统是否注册
     * @param accessKeyId 平台接入Key值
     * @return
     */
    PlatformEntity checkAccessKeyId(String accessKeyId);

    /**
     * 检验密钥是否通过
     * @param timestamp
     * @param accessKeyId
     * @param accessKeySecret
     * @param accessEncryption
     */
    void checkAuth(String timestamp, String accessKeyId, String accessKeySecret, String accessEncryption);


    /**
     * 检验手机号是否黑名单中
     * @param mobile
     */
    void checkBlack(String mobile);


    /**
     * 检验模板和签名
     * @param template
     * @param signature
     * @return
     */
    List<String> checkTemplateAndSignature(String template, String signature);

    /**
     * 检验定时发送时间
     * @param sendTime
     */
    void checkoutSendTime(String sendTime);


    /**
     * 检验参数
     * @param templateCode
     * @param params
     * @return
     */
    TemplateEntity checkParams(String templateCode, Map<String, String> params);


    /**
     * 发送
     * @param paramsDTO
     */
    void send(ParamsDTO paramsDTO);

    /**
     * 批量发送
     * @param batchParamsDTO
     */
    void batchSend(BatchParamsDTO batchParamsDTO);

}
